Many data processing systems use a monitor process to direct the flow of work. The monitor process receives requests for work to be performed and assigns the work to a server process. Some monitor processes have sufficient intelligence to select the proper server process to which the work will be assigned based on the request received. Some monitor processes record certain information about the request received. For instance, the request itself may be recorded to allow the request to be reimplemented if the monitor process receives a redo request. The monitor may maintain information sufficient to remove the effect of the implemented request in the event the monitor receives an undo request. Other information about the implemented request, referred to as a transaction, may also be recorded by the monitor.
Because the monitor may receive requests faster than the server processes can implement them, some conventional monitors operate a queue. When the request is received, it is placed in a queue. If the monitor will receive commands for many types of server processes, the monitor may place the request in one of several queues based on one or more attributes of the request. A server process may either take the request from its monitor queue, or signal the monitor to provide the next request from that queue.
Some conventional monitors can adjust the load of the queue by starting and stopping more server processes. For example, if there are two types of processes, A and B, and there are 4 A processes and 4 B processes running on a server, if the queue for the B processes has 100 pending requests and the queue for A processes has none, the monitor process can instruct the server to terminate two of the A processes and initiate two more of the B processes. The monitor process may run the server processes in this configuration until the number of requests in the queue for A processes exceeds the number of requests in the queue for B processes. However, in some circumstances, requests arrive to the monitor process so much more quickly than they can be processed by the available server processes that the monitor process is unable to add sufficient capacity. As a result, the average length of time a request is in the queue will grow over time, which may be seen as an increase in response time by a user.
Some conventional monitor processes allow a requesting process to request information about the queue. For example, some conventional monitor processes timestamp each request when it is placed into the queue. The monitor will provide in response to an appropriate request the number of entries in one or all queues, and can provide the timestamps of each request in the queue. This capability allows the requesting process to identify when response times are becoming unacceptably large so that appropriate measures may be taken to maintain an acceptable level of service. For example, if a queue size reaches a particular threshold, an operator may be alerted so that additional server capacity may be made available to the monitor. Another way to deal with an unacceptable response time is to refuse to allow additional users access to the system containing the monitor and server processes until the response time reaches an acceptable level.
Refusing access to a system can frustrate users and so additional accuracy is required before such a drastic step is taken. For example, if response times exceed a threshold for refusing access, but are declining, it may not be necessary to deny access to a user in order to maintain a certain level of service. Furthermore, steadily increasing response times could signal a need to refuse additional users access to the system even before the response times hit the threshold.
What is needed is a system and method for identifying the load of a system served by a monitor responsive to trends in the load.